<?php
namespace App\Common;


class CommonHelpers {
    static $ERROR_MAP = [
        0 => 'OK',
        1 => '此功能正在开发中',
        10 => '未登录',                // 需要跳转登录
        11 => '未登录',                // 不需要跳转
        20 => '未登录到会员Mall',
        30 => '您好，只有黑卡PLUS会员才可以购买哦！',
        40 => '黑卡Plus会员办理中，请稍稍后再试',
        60 => '300盟豆已领取',

        //三位数,一般指入参不对
        100 => '缺少参数',
        101 => '请传递phone参数',
        102 => '优惠券信息错误',
        103 => '优惠券不可用',
        104 => '状态值错误',
        105 => '参数不合法',
        106 => '未传递业务员ID',
        107 => '分类ID不正确',
        108 => '无可管理店铺',
        110 => '金额输入错误',

        301 => '无效签名',          // 佣金结算中心用

        400 => '数据为空',
        401 => '无权限',
        402 => '状态不可更改',
        406 => '没有开通业务',
        419 => '正在处理中，请稍候',

        1000 => '用户不存在',
        1001 => '短信验证码错误',
        1002 => '当前用户无权管理此店铺',
        1003 => '店铺不存在',
        1004 => '店铺未在正常营业状态',
        1005 => '店铺不属于此类目',
        1020 => '还未绑定手机号码',
        1041 => '您暂无权限，请联系您的业务员',

        3001 => '无效的卡密',
        3002 => '卡密已使用',

        4000 => '无效签名',
        4001 => '缺少参数',

        // 信用购业务
        5000 => '您已预约了信用购业务',
        5001 => '很遗憾，您不具备信用购资格',
        5004 => '不是黑卡PLUS会员',
        5006 => '黑卡PLUS会员',
        5005 => '商家不支持信用购业务',
        5100 => '请重新扫描二维码',
        5110 => '请允许商家可以联系我',

        5140 => '提货码已使用或无效',

        // 购物金
        6000 => '订单已支付',
        6001 => '您的购物金账户异常，请稍后再试',

        7000 => '优惠券兑换成功',
        7001 => '优惠券无效规则',
        7002 => '限商城板块中使用',
        7003 => '不支持的该类型卡券使用',


        10000 => '系统错误',
        10001 => '由于网络原因,短信发送失败',
        10002 => '店铺管理员添加失败',
        10003 => '店铺更新失败',
        10004 => '店铺分类更新失败',
        10005 => '缓存设置错误',
        10006 => '订单提交失败',
        10007 => '确认订单失败',
        10008 => '取消订单失败',
        10009 => '创建优惠券失败',
        10010 => '增加优惠券失败',
        10011 => '优惠券不存在',
        10012 => '优惠券已下架',
        10013 => '优惠券已发完',
        10014 => '账户盟豆不足',
        10015 => '优惠券减库存失败',
        10016 => '优惠券发放失败',
        10018 => '订单已确认,无需再次确认',
        10019 => '订单确认失败',
        10022 => '顾客无此优惠券',
        10023 => '优惠券未达到使用标准',
        10024 => '优惠券核销失败',
        10025 => '优惠券退回失败',
        10026 => '取消的申请不存在',
        10027 => '无权限查看此申请',
        10028 => '无此订单',
        10029 => '修改店铺信息失败',
        10030 => '优惠券id错误或不属于此店铺',
        10031 => '店铺不存在',
        10032 => '参数验证失败',
        10033 => '重复回调',
        10034 => '广告参数错误',
        10035 => '无权管理此优惠券',
        10036 => '此申请已处理',
        10037 => '没有权限核销当前优惠券',
        10038 => '优惠支付超出限额',
        10040 => '订单状态不能取消',

        10051 => '优惠券已经被使用',
        10052 => '优惠券已过期',
        10053 => '优惠券已评价',
        10054 => '优惠券限制使用',
        10055 => '优惠券限制购买',
        10056 => '很抱歉，您所购数量超出单人购买上限',
        10057 => '很抱歉，商品库存不足',
        10058 => '很抱歉，您当前有未使用的订单，请到订单中查看',
        10059 => '优惠卷今天发完了,请明天再来吧',

        10061 => '盟豆已领取',
        10080 => '收入分成不可重复确认',

        10100 => '优惠券不支持方式兑换或者购买',
        10101 => '未查询到可以使用的卓游币',
        10102 => '积分兑换处理中，请耐心等待',
        10103 => '积分兑换失败',
        10104 => '优惠券兑换失败',

        10401 => '员工创建失败',
        10402 => '员工手机号码已存在',

        11000 => '积分查询失败',
        11001 => '扣积分失败',
        11002 => '积分冲正失败',
        11003 => '积分不足',

        12000 => '退款失败',
        12001 => '无效退款',
        12002 => '重复提交退款申请',
        12010 => '退款处理中',
        12011 => '退款订单已核销',

        13000 => '权益包卡密不存在',

        20001 => '渠道码创建失败',
        //3000*的是商品的返回信息
        30001 => '请选择要查询的店铺',


    ];
    /**
     * 返回值格式化
     * 由于此方法设置了header所以不可以在controller和middleware之外的地方调用
     * @param int $error
     * @param string $data
     * @param string msg 优先级高于self::$ERROR_MAP
     * @return array
     */
    static public function responseFormat(int $error=0, $data = null, $msg = null)
    {
        $response = [
            'error' => $error,
            'data' => $data,
            'msg' => $msg ? $msg : (isset(self::$ERROR_MAP[$error]) ? self::$ERROR_MAP[$error] : '未知错误')
        ];
        return response()->json($response)->setEncodingOptions(JSON_UNESCAPED_UNICODE)->setEncodingOptions(JSON_UNESCAPED_SLASHES);
        //return $response;
    }



}

